Fino ad adesso abbiamo usato i seguenti stream:

  • ostream: che rappresenta uno stream di output, ad esempio cout è una classe di tipo ofstream, di seguito un’esempio di come viene utilizzata nell’overloading di un’operatore
ostream& operator<<(ostream& stream,Book& book){
	stream << "Titolo: " << book.getTitolo();
	stream << " Autore: " << book.getAutore();
	stream << " Anno: " << book.getAnno();
	stream << " Next: " << book.getNext() << "\n\n";
	return stream;//ritorno del stream per la concatenazione "cout << libro1 << libro2 ecc..."
}
  • ifstream: è una classe che viene usata per leggere da un file, di seguito un esempio di come viene usata, anche in questo caso si usa l’operatore di shifting:
        void caricaDaArchivio(string nomeFile){
            ifstream file(nomeFile, ios::in);
            if(file.fail()){
                cout << "Errore nell'apertura del file";
                return;
            }
            int len = 0;
            file >> len;//leggo il primo valore e lo salvo in len
            string titolo,autore;
            int anno;
            for (int i = 0;i<len;i++){
                file >> titolo;//leggo e salvo il titolo
                file >> autore;//leggo e salvo l'autore
                file >> anno;//leggo e salvo  l'anno
                this->addBook(new Book(titolo,autore,anno));
            }
        }
  • ofstream: è una classe usata per scrivere su file, di seguito un esempio di come viene usata, anche qui si usa l’operatore di shifting:
   void scriviSuArchivio(string nomeFile){
            ofstream file(nomeFile, ios::out);
            if(file.fail()){
                cout << "Errore nell'apertura del file";
                return;
            }
            Book* tempHead = head;
            file << this->getLen() << endl;
            while(tempHead != nullptr){
                file << tempHead->getTitolo() << endl;
                file << tempHead->getAutore() << endl;
                file << tempHead->getAnno() << endl;
                tempHead = tempHead->getNext();
            }
            file.close();
            return;
        }

In questo [[1203 programmazione-2[✅30]/C++/stream/main.cpp|file]] vengono usati tutti è tre.